// 路由导航守卫拦截
// 白名单
import router from './router'
import store from '@/store'
import nProgress from 'nprogress'
const WhiteList = ['/login', '/404']
// import { asyncRoutes } from '@/router/index'
router.beforeEach(async(to, from, next) => {
// 判断是否有token
  const token = store.getters.token
  // console.log(token)
  if (token) {
    if (to.path === '/login') {
    // 登录后想去哪那就去那
      next('/')
      nProgress.done()
    } else {
      // 3.登录过访问的不是登录页,直接方向
      // console.log('取资料')
      // 不要每次路由跳转都去获取个人信息, 判断store.state.user.userInfo.userId有没有, 有这个userId字段, 没有必要再获取个人信息
      if (!store.getters.name) {
      // 在放行之前获取个人资料 触发action
        const res = await store.dispatch('user/getUserInfo')
        const res2 = await store.dispatch('permission/filterRoutes', res.roles.menus)
        // console.log(res2)
        // console.log(res) // res.data中有一个roles字段,后期会在这个位置做权限处理
        router.addRoutes(res2)// 添加动态路由规则(异步不会立即生效)，8个动态路由
        next({
          ...to.path,
          replace: true// 避免历史路由重复问题，以原来的姿势重新进入一次
        })
        return
      }
      next()
    }
  } else {
    // 没有登录的情况
    if (WhiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
    }
  }
})
// 后置导航守卫
router.afterEach((to, from) => {
  // 关闭进度条
  nProgress.done()
})
